package com.easthome.util;

import com.easthome.constant.RedisConstant;
import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.io.InputStream;
@Component //把当前类的对象放再ioc容器中 对象唯一  单例模式
public class FileUploadUtil {
    @Autowired
    private MinioClient minioClient;

    //注入对象java链接redis数据库的对象
    @Autowired
    private JedisPool jedisPool;

    //文件上传
    public void fileupload( InputStream fis,String fileName) {
        try {

            //创建桶之前先判断桶是否存在
            if (minioClient.bucketExists(BucketExistsArgs.builder()
                    .bucket("picture")
                    .build())) {
                System.out.println("桶已经存在");
            } else {
                System.out.println("桶不存在");
                //在minio服务器中创建桶
                minioClient.makeBucket(MakeBucketArgs.builder()
                        //设置桶名
                        .bucket("picture")
                        .build());
            }
            minioClient.putObject(PutObjectArgs.builder()
                    //上传到哪个桶
                    .bucket("picture")
                    //上传后的文件名
                    .object(fileName)
                    //文件上传的方法 读取文件的流对象 文件的字节数 文件的元数据
                    .stream(fis, fis.available(), -1)
                    .build());
            fis.close();
            //文件上传成功 文件名存到redis数据库
            //set集合类型 特点不冲突
            Jedis jedis = jedisPool.getResource();//连接池获取jedis对象
            jedis.sadd(RedisConstant.SETMEAL_PIC_RESOURCES,fileName);
            jedis.close();
        }catch (Exception ex){
            ex.printStackTrace();
        }
    }
}
